.\"
.\" This file and its contents are supplied under the terms of the
.\" Common Development and Distribution License ("CDDL"), version 1.0.
.\" You may only use this file in accordance with the terms of version
.\" 1.0 of the CDDL.
.\"
.\" A full copy of the text of the CDDL should have accompanied this
.\" source.  A copy of the CDDL is also available via the Internet at
.\" http://www.illumos.org/license/CDDL.
.\"
.\"
.\" Copyright 2017, Richard Lowe.
.\"
.Dd Jan 18, 2017
.Dt VMEM_ADD 9F
.Os
.Sh NAME
.Nm vmem_add
.Nd add spans to a vmem arena
.Sh SYNOPSIS
.In sys/vmem.h
.Ft void *
.Fo vmem_add
.Fa "vmem_t *vmp"
.Fa "void *vaddr"
.Fa "size_t size"
.Fa "int vmflag"
.Fc
.Sh INTERFACE LEVEL
illumos DDI specific
.Sh PARAMETERS
.Bl -tag -width Ds
.It Fa vmp
The vmem arena to which the span should be added.
.It Fa vaddr
The base address of the span to add.
.It Fa size
The size of the span to add.
.It Fa vmflag
Flags affecting the allocation of the span to add.
.El
.Sh DESCRIPTION
The
.Fn vmem_add
function adds
.Fa size
bytes starting at
.Fa vaddr
to a vmem arena from which future calls to
.Fn vmem_alloc
may allocate.
.Pp
.Dv VM_SLEEP
or
.Dv VM_NOSLEEP
must be specified in
.Fa vmflag ,
and indicate whether the addition may block.
.Sh CONTEXT
This function can be called from either user or kernel context.
If the
.Dv VM_NOSLEEP
flag is specified, it may also be called from interrupt context.
.Sh RETURN VALUES
Upon success
.Fn vmem_add
returns
.Fa vaddr .
On failure,
.Dv NULL
is returned.
.Sh SEE ALSO
.Xr vmem 9 ,
.Xr vmem_alloc 9F ,
.Xr vmem_create 9F
